package com.isoft.listener;
import com.isoft.entity.tableentity.dfme_lbde.DfmeLbdeMsg;
import com.isoft.service.tableservice.DfmeLbdeService;
import com.isoft.utils.XmlUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.springframework.stereotype.Component;

import java.io.File;

@Component
public class FileListener extends FileAlterationListenerAdaptor {

    private static DfmeLbdeService dfmeLbdeService;

    public static DfmeLbdeService getDfmeLbdeService() {
        return dfmeLbdeService;
    }

    public static void setDfmeLbdeService(DfmeLbdeService dfmeLbdeService) {
        FileListener.dfmeLbdeService = dfmeLbdeService;
    }

    @Override
    public void onFileCreate(File file) {
        try {
            String filePath = "D:\\file\\文件监听插入文件演示";
            // 确保文件解析逻辑正常工作
            DfmeLbdeMsg dfmeLbdeMsg = XmlUtils.parseXml(filePath,file.getName(), DfmeLbdeMsg.class);
            // 假设parseXml方法返回了正确的BaseAqueMsg对象且其中包含了meta信息
            if (dfmeLbdeMsg.getDfmeLbdeMeta() != null && dfmeLbdeMsg.getDfmeLbdeDflt()!= null) {
                // 使用服务层方法将数据插入数据库
                int insertSuccess = dfmeLbdeService.insertmsg(dfmeLbdeMsg);
                if (insertSuccess>0) {
                    System.out.println("文件内容成功插入数据库");
                } else {
                    System.out.println("文件内容插入数据库失败");
                }
            } else {
                System.out.println("解析文件失败或获取到的数据不完整");
            }
        } catch (Exception e) {
            // 更好的异常处理，记录日志，而不是直接抛出运行时异常
            System.err.println("处理文件时发生错误：" + e.getMessage());
            // 这里可以根据实际情况决定是否需要重新抛出异常
        }
        System.out.println("创建文件" + file.getAbsolutePath());
    }

}
